草庐IT

LeetCode - 回文数

全部标签

【算法专题】动态规划之回文子串问题

动态规划6.0动态规划---回文子串问题1.回文子串2.最长回文子串3.分割回文串Ⅳ4.分割回文串Ⅱ5.最长回文子序列6.让字符串成为回文串的最少插入次数动态规划---回文子串问题1.回文子串题目链接->Leetcode-647.回文子串Leetcode-647.回文子串题目:给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例1:输入:s=“abc”输出:3解释:三个回文子串:“a”,“b”,“c”示例2:输入:s

LeetCode:376.摆动序列

个人主页:仍有未知等待探索-CSDN博客专题分栏:算法_仍有未知等待探索的博客-CSDN博客题目链接:376.摆动序列-力扣(LeetCode)一、题目如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1,7,4,9,2,5] 是一个 摆动序列 ,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反,[1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。子序列 可以通过从

【Leetcode】410. 分割数组的最大值

文章目录题目思路1.max_element2.partial_sum3.upper_bound4.distance代码运行结果题目题目链接给定一个非负整数数组nums和一个整数k,你需要将这个数组分成k个非空的连续子数组。设计一个算法使得这k个子数组各自和的最大值最小。示例1:输入:nums=[7,2,5,10,8],k=2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5]和[10,8]。因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。示例2:输入:nums=[1,2,3,4,5],k=2输出:9示例3:输入:nums=[1,4,4]

代码随想录算法训练营第16天| Leetcode 110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

目录Leetcode110.平衡二叉树Leetcode257.二叉树的所有路径Leetcode 404.左叶子之和Leetcode110.平衡二叉树题目链接:Leetcode110.平衡二叉树题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。思路:由于本题是比较左右子树高度差,因此使用后序遍历更合适。分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。代码如下:(递归法)classSolution{public:intgetHeight

Leetcode03 用滑动窗口思想来解决字符串问题

什么是滑动窗口思想:滑动窗口是一种算法技巧,用于解决一类涉及子串/子数组的问题。滑动窗口可以通过定义两个指针(通常是左右指针或起始和结束指针),来构建一个可变大小的窗口,从而在给定的数据结构(如字符串或数组)上移动窗口,并实时更新窗口内的状态。滑动窗口算法的基本思想是:初始化窗口的左右边界,使窗口包含初始的元素或子串。不断移动右边界,扩大窗口,同时根据问题要求进行相应的操作(如计算最小值、最大值、求和等)。如果窗口内的状态满足某个条件,尝试缩小窗口,即移动左边界,继续进行步骤2。重复步骤2和3,直到右边界到达数据结构的末尾。滑动窗口主要分为两大类,一种是长度固定的滑动窗口,一种是长度动态变化的

【每日一题】3.LeetCode——相交链表

📚博客主页:爱敲代码的小杨.✨专栏:《JavaSE语法》❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!文章目录1.题目描述示例1:示例2:提示2.思路3.代码1.题目描述给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统的输入如下(你设计的程序不适用此输入):intersectVal-相交的起始节点的值。如果不存在相

leetcode—矩阵

1矩阵置零给定一个 mxn 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例1:输入:matrix=[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]方法一:使用标记数组新建两个标记数组rowcolumn第一次遍历数组记录数组中每一行每一列中的值是否为0第二次遍历数组将数组中0所在的行和列设置为0classSolution{publicvoidsetZeroes(int[][]matrix){intm=matrix.length;intn=matrix[0].length;//新建两个数组记录

【刷题】 leetcode 面试题 01.06 字符串压缩

字符串压缩字符串压缩思路一(双指针顺畅版)思路二(sprintf函数巧解版)Thanks♪(・ω・)ノ谢谢阅读下一篇文章见!!!字符串压缩来看题目:根据题目所说,我们需要完成函数书写,保证返回一个相对较小的字符数组:如果压缩后比原字符串小,则返回压缩字符串,否则返回原字符串。思路一(双指针顺畅版)本思路一步一步操作,逐步完成任务先确认字符串长度是否小于2,小于直接返回(因为压缩字符串长度至少是2)然后定义双指针和计数位开始遍历:*fast与*slow不相等则fast向后移动然后记录重复次数重复次数分位数进入数组slow到fast位置,计数归零重复3-6直到遍历结束char*compressSt

【动态规划】【二分查找】【C++算法】730. 统计不同回文子序列

作者推荐【动态规划】【数学】【C++算法】18赛车涉及知识点动态规划二分查找LeetCode730.统计不同回文子序列给你一个字符串s,返回s中不同的非空回文子序列个数。由于答案可能很大,请返回对109+7取余的结果。字符串的子序列可以经由字符串删除0个或多个字符获得。如果一个序列与它反转后的序列一致,那么它是回文序列。如果存在某个i,满足ai!=bi,则两个序列a1,a2,…和b1,b2,…不同。示例1:输入:s=‘bccb’输出:6解释:6个不同的非空回文子字符序列分别为:‘b’,‘c’,‘bb’,‘cc’,‘bcb’,‘bccb’。注意:‘bcb’虽然出现两次但仅计数一次。示例2:输入:

【leetcode100-051到054】【图论】四题合集

【岛屿数量】给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。思路:很经典也很基础的图搜题,bfs或者dfs都行,这题先用dfs写一下。每次开启函数(而不是被递归调用),会将当前起点能接触到的所有陆地都访问一次再退出,记录函数开启的次数即可。对每个格子,我们向上下左右四个方向拓展,对其中位置合法的、是陆地的、还没被访问过的格子进行递归调用,直到所有能访问的格子都访问完毕。代码其实跟树的dfs也大同小异,区别只在出口的判断条件,以及可能递归